const express = require('express')

const adminModel = require('../db/models/adminModel')
const router = express.Router()
// 引入我们自己封装的jwtManger
const jwtManger = require('../utils/jwtManger')
// 验证token的接口
router.post('/verifyToken', async (req, res) => {
  // 接收当前登录用户的id
  const { id } = req.fields
  // 接收请求头中的token
  const token = req.get('token')
  // 判断如果没有token,则不继续校验
  if (!token) return res.send({ status: 0, message: 'token失效,请重新登录' })
  // 校验传上来的token和我们数据库中的token是否一致
  const admin = await adminModel.findOne({ _id: id, token })
  // 如果admin是一个对象,则说明token是一致的.就继续判断是否在有效期,如果admin是null则说明token错误
  if (!admin) return res.send({ status: 0, message: 'token失效,请重新登录' })

  // 校验token的有效期
  // 1. 解密token
  const obj = jwtManger.decodeToken(token)
  // 获取当前登录用户token有效期的截止时间
  const loginTime = obj.expires
  // 获取校验token的时间戳
  const currentTime = Date.now()
  // 判断如果token截止时间小于当前时间,则说明token失效
  if (currentTime >= loginTime)
    return res.send({ status: 0, message: 'token失效,请重新登录' })
  // 说明上面的三次校验都通过,则表示登录有效
  res.send({ status: 1, message: 'token验证成功' })
})

module.exports = router
